package com.ungs.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

import com.ungs.dao.ProveedorDAO;
import com.ungs.entities.Proveedor;

public class ProveedorDAOImpl extends EntidadDAOImpl<Proveedor> implements
		ProveedorDAO {

	@SuppressWarnings("unchecked")
	@Override
	public List<Proveedor> getProveedorByRazonSocial(String razonSocial,
			String cuit, boolean todos) throws HibernateException {
		List<Proveedor> proveedorList = new ArrayList<Proveedor>();

		logger.info("Obteniendo proveedor por filtro");
		try {
			iniciaConexion();
			Criteria criteria = getSession().createCriteria(Proveedor.class);

			if (razonSocial != null) {
				if (!razonSocial.trim().isEmpty()) {
					criteria.add(Restrictions.like("razonSocial", razonSocial
							+ "%"));
				}
			}

			if (cuit != null) {
				if (!cuit.trim().isEmpty()) {
					criteria.add(Restrictions.eq("cuit", cuit));
				}
			}

			if (!todos) {
				criteria.add(Restrictions.eq("estadoLogico", "A"));
			}

			proveedorList = (List<Proveedor>) criteria.list();

		} catch (HibernateException he) {
			logger.error("Error al traer el proveedor por filtro: " + Proveedor.class
					+ "DAO");
			manejaExcepcion(he);
			throw he;
		} finally {
			getSession().close();
		}

		return proveedorList;
	}

}
